package edu.dew_summer2011;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import edu.dew_summer2011.dominio.Cliente;

public class ClienteManager {
	Integer positioncarnombre=1;
	Map<String, Cliente> repositorycl;

	public ClienteManager() {
		this.repositorycl = new HashMap<String, Cliente>();
//		Cliente cliente1= new Cliente("rmejiap","abc","A",1, "rocio","mejia","paredes");
//		this.repositorycl.put("rmejiap", cliente1);
	}
	
	public boolean anadircodigo(String nombre, String apellido1, String apellido2)
	{				
		String usuario = "";		
		String primer = (nombre.substring(0, positioncarnombre)).toLowerCase();
		
		int total = apellido1.length() + apellido2.length();
		if (total > 9){			
			usuario = ((apellido1 + apellido2).substring(0, 9)).toLowerCase();
			String newcodigo=primer + usuario;

			//verify this user is not already in the list						
			if (buscacodigoclienterepeat(newcodigo)== false) {
				positioncarnombre+=1;
				newcodigo=(nombre.substring(0, positioncarnombre)).toLowerCase()+ usuario;
				System.out.println("cliente duplicado pero se recrea codigo : " + newcodigo);			
			}			
			
//			Cliente cliente1 = new Cliente(newcodigo,newcodigo,"B",0, nombre,apellido1,apellido2 );						
//			this.repositorycl.put(newcodigo, cliente1);			
			System.out.println("cliente agregado: "+newcodigo);
			return true;
			
		}else
		{
			System.out.println("El sistema no puede armar el codigo con menos de 10 caracteres "+primer+apellido1+apellido2);
			return false; 
		}
		
	}
	
	public boolean buscacodigoclienterepeat(String usuarioEvaluar)
	{
		Iterator<Cliente> clientes = this.repositorycl.values().iterator();
		while(clientes.hasNext()) {
			Cliente cliente = clientes.next(); 
		    if(cliente.getCodigo().equalsIgnoreCase(usuarioEvaluar)) return false;		    		      
		}
		return true;
		
	}
	
	public boolean vericarclave(String codigo, String clave)
	{
		Cliente existeclienttemp = this.repositorycl.get(codigo);
		if (existeclienttemp == null){	
			System.out.println("Cliente no existe: " + codigo);
			return false;}
		String claveexistente= existeclienttemp.getClave();
		if (claveexistente.equals(clave)== false) 
		{
			Integer numtryouts= sumarIntentos(existeclienttemp);
//			if (numtryouts==3)  {
//				existeclienttemp.setStatus("B");
//				System.out.println("intentos: "+existeclienttemp.getIntentos()+" Status cambiado por limite de intentos: "+existeclienttemp.getStatus());
//				}
				
			System.out.println("intentos: "+existeclienttemp.getIntentos()); 
			
			return false;
		}
		
		return claveexistente.equals(clave);
	}
	
	public Integer sumarIntentos(Cliente cliente1)
	{
		
		cliente1.setIntentos(cliente1.getIntentos()+1);
		return cliente1.getIntentos();	
		
	}
}
